Information processing system, information processing apparatus, and information processing method

ABSTRACT

An information processing system includes a memory and processors. The memory stores flow information and flow identification information for each sequence of processes performed by using electronic data. The flow information defines program identification information identifying programs for executing the sequence of processes, and an execution order of the programs. The processors execute computer-executable instructions stored in the memory to execute a process including receiving information relating to the electronic data and flow identification information, from a device coupled to the information processing system; acquiring the flow information stored in association with the received flow identification information; provisionally executing the sequence of processes based on the received information and the acquired flow information; and executing the sequence of processes based on the received information and the acquired flow information, upon determining that an error has not occurred in the provisional execution of the sequence of processes.

CROSS-REFERENCE TO RELATED APPLICATION

The present application claims priority under 35 U.S.C. §119 of JapanesePatent Application No. 2016-167332, filed on Aug. 29, 2016, the contentsof which are incorporated herein by reference in their entirety.

BACKGROUND OF THE INVENTION 1. Field of the Invention

The present invention relates to an information processing system, aninformation processing apparatus, and an information processing method.

2. Description of the Related Art

In recent years, a service for providing a function formed by combininga plurality of functions (for example, scanning, printing, and uploadingto an external service, etc.) has become known. For example, there is aknown service of uploading electronic data, which has been generated bya scanning process, to an external service, etc. This type of service isimplemented by executing a one or more processes implementing thefunctions, as a sequence of processes.

Furthermore, there is a known image forming apparatus that executes thesequence of processes based on an instruction including processinginformation, etc., expressing one or more processes as the sequence ofprocesses (see, for example, Patent Document 1).

Patent Document 1: Japanese Patent No. 4039191

SUMMARY OF THE INVENTION

An aspect of the present invention provides an information processingsystem, an information processing apparatus, and an informationprocessing method in which one or more of the above-describeddisadvantages are reduced.

According to one aspect of the present invention, there is provided aninformation processing system including one or more informationprocessing apparatuses configured to implement various functions of theinformation processing system, the information processing systemincluding a memory to store flow information and flow identificationinformation identifying the flow information, in association with eachother, for each sequence of processes performed by using electronicdata, the flow information defining program identification informationidentifying one or more programs for respectively executing theprocesses included in the sequence of processes, the flow informationalso defining an execution order of executing the one or more programs,and computer-executable instructions; and one or more processorsconfigured to execute the computer-executable instructions such that theone or more processors execute a process including receiving, over acommunication network, information relating to the electronic data andflow identification information, from one of one or more devices coupledto the information processing system, according to an operation inputvia a user interface of the one of one or more devices; acquiring theflow information stored in association with the received flowidentification information, among the flow information stored in thememory; provisionally executing the sequence of processes using theelectronic data based on the received information relating to theelectronic data, by respectively provisionally executing the one or moreprograms identified by the program identification information defined inthe acquired flow information, in the execution order defined in theacquired flow information; and executing the sequence of processes usingthe electronic data based on the received information relating to theelectronic data, by respectively executing the one or more programsidentified by the program identification information defined in theacquired flow information, in the execution order defined in theacquired flow information, upon determining that an error has notoccurred in the provisional execution of the sequence of processes.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a diagram illustrating an exemplary system configuration of aninformation processing system according to an embodiment of the presentinvention;

FIG. 2 is a diagram illustrating a hardware configuration of anexemplary service providing system according to an embodiment of thepresent invention;

FIG. 3 is a diagram illustrating a hardware configuration of anexemplary device according to an embodiment of the present invention;

FIG. 4 illustrates a functional configuration of an example of theinformation processing system according to an embodiment of the presentinvention;

FIGS. 5A through 5D illustrate examples of a common interface (I/F) anda unique I/F according to an embodiment of the present invention;

FIG. 6 illustrates a functional configuration of an example of a logicprocessing unit according to an embodiment of the present invention;

FIG. 7 illustrates an example of a format conversion information tableaccording to an embodiment of the present invention;

FIG. 8 illustrates an example of process flow information according toan embodiment of the present invention;

FIG. 9 is a sequence diagram of an example of the overall process of an“Optical Character Recognition (OCR) delivery A” service according to anembodiment of the present invention;

FIG. 10 illustrates an example of screen information according to anembodiment of the present invention;

FIG. 11 illustrates an example of an application screen according to anembodiment of the present invention;

FIG. 12 is a sequence diagram of an example of the process of executingthe process flow according to an embodiment of the present invention;

FIG. 13 is a sequence diagram of an example of a process ofprovisionally executing an OCR component according to an embodiment ofthe present invention;

FIG. 14 is a sequence diagram of an example of a process ofprovisionally executing a delivery A component according to anembodiment of the present invention;

FIG. 15 a sequence diagram of an example of a process of formallyexecuting the OCR component according to an embodiment of the presentinvention;

FIG. 16 is a sequence diagram of an example of a process of formallyexecuting the delivery A component according to an embodiment of thepresent invention; and

FIG. 17 is a sequence diagram of another example of the process ofexecuting the process flow according to an embodiment of the presentinvention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

In the technology of the related art, when an error, etc., occurs in thesequence of processes, there have been cases where it takes time untilthe occurrence of the error, etc., is reported to the user. That is, forexample, when an error, etc., occurs in the last process executed amongthe processes of the sequence of processes, the user needs to wait forthe last process to be executed and the error, etc., to be reported.

A problem to be solved by an embodiment of the present invention is toreduce the waiting time in a case where an error occurs in a sequence ofprocesses.

Embodiments of the present invention will be described by referring tothe accompanying drawings.

<System Configuration>

Referring to FIG. 1, an information processing system 1 according to thefirst embodiment is described. FIG. 1 is a diagram illustrating anexemplary system configuration of the information processing system 1according to the first embodiment.

The information processing system 1 illustrated in FIG. 1 includes aservice providing system 10, a device 20, and an external storage system30, which are communicably coupled through a wide area network N1 suchas the Internet.

The service providing system 10 is implemented by at least oneinformation processing apparatus and provides various servicesimplemented by a sequence of processes, which cooperate with an externalservice such as cloud service via the network N1.

The service provided by the service providing system 10 according to thefirst embodiment is specifically described below. Hereinafter, thesequence of processes is referred to as a “process flow”.

Although the external service to be described in the first embodiment isspecifically the cloud service, the external service is not limited tothis cloud service. For example, the first embodiment may be applied tovarious external services such as a service provided by an applicationservice provider (ASP) and a web service, which are provided via thenetwork.

The devices 20 are various electronic devices used by a user. That is,the device 20 is, for example, an image forming apparatus such as amultifunction peripheral (MFP), a personal computer (PC), a projector,an electronic whiteboard, a digital camera, or the like. The user usesthe device 20 to use various services provided by the service providingsystem 10.

Hereinafter, when each of the plurality of devices 20 is distinguished,a suffix is added such as a “device 20 ₁” and a “device 20 ₂”.

The external storage system 30 is a computer system providing a cloudservice called a storage service (or an online storage). The storageservice is a service of lending a memory area of a storage of theexternal storage system 30.

Hereinafter, when each of the plurality of external storage systems 30is distinguished, a suffix is added such as an “external storage system30 ₁” and an “external storage system 30 ₂”. Further, the name of thestorage service provided by the external storage system 30 ₁ is “storageA”, and the name of the storage service provided by the external storagesystem 30 ₂ is “storage B”.

The external storage system 30 may be a system implemented by aplurality of information processing apparatuses.

The configuration of the information processing system 1 illustrated inFIG. 1 is an example and may have other configurations. For example, theinformation processing system 1 according to the first embodimentincludes various devices, each of which performs at least one of aninput and an output of the electronic data. These devices may usevarious services provided by the service providing system 10.

<Hardware Configuration>

Referring to FIG. 2, described next is the hardware configuration of theservice providing system 10 included in the information processingsystem 1 according to the first embodiment. FIG. 2 is a diagramillustrating the hardware configuration of an exemplary serviceproviding system 10 according to the first embodiment.

The service providing system 10 illustrated in FIG. 2 includes an inputdevice 11, a display device 12, an external interface (I/F) 13, and arandom access memory (RAM) 14. Further, the service providing system 10includes a read only memory (ROM) 15, a central processing unit (CPU) 16(an example of one or more processors), a communication interface (I/F)17, and a hard disk drive (HDD) 18. Each of the ROM 15, the CPU 16, acommunication I/F 17, and the HDD 18 is connected by the bus B.

The input device 11 includes a keyboard, a mouse, a touch panel, and thelike, by which the user inputs various operation signals. The displaydevice 12 includes a display or the like to display a processing resultacquired by the service providing system 10. At least one of the inputdevice 11 and the display device 12 may be in a mode of being coupled tothe service providing system 10 so as to be used.

The communication I/F 17 is an interface provided to couple the serviceproviding system 10 with the network N1. Thus, the service providingsystem 10 can communicate with another device through the communicationI/F 17.

The HDD 18 is a non-volatile memory device that stores programs anddata. The program and data stored in the HDD 18 are an operating system(OS), which is basic software controlling the entire service providingsystem 10, application software providing various functions in the OS,and so on.

The service providing system 10 may use a drive device (e.g., a solidstate drive (SSD)) using a flash memory as a memory medium in place ofthe HDD 18. Further, the HDD 18 administers the stored program and thestored data using at least one of a predetermined file system and apredetermined database (DB).

The external I/F 13 is an interface with an external device. Theexternal device includes a recording medium 13 a and so on. With thisconfiguration, the service providing system 10 can read information fromthe recording medium 13 a and write information to the recording medium13 a through the external I/F 13. The recording medium 13 a is aflexible disk, a CD, a DVD, an SD memory card, a USB memory, or thelike.

The ROM 15 is a non-volatile semiconductor memory that can store aprogram or data even when a power source is powered off. The ROM 15stores a program and data such as a basic input/output system (BIOS), anoperating system (OS) setup, a network setup, or the like, which areexecuted at a time of starting up the service providing system 10. TheRAM 14 is a volatile semiconductor memory configured to temporarilystore the program and the data.

The CPU 16 reads the program and/or data from the memory device such asthe ROM 15 and the HDD 18. The read program or the read data undergo aprocess to thereby realize control or a function of the entire serviceproviding system 10.

The service providing system 10 of this embodiment can realize variousprocesses described below by having the above hardware configuration ofthe service providing system 10 illustrated in FIG. 2.

Referring to FIG. 3, described next is the hardware configuration of animage forming apparatus, which is the device 20 included in theinformation processing system 1 of the embodiment. FIG. 3 is a diagramillustrating a hardware configuration of an exemplary device 20according to the first embodiment.

The device 20 illustrated in FIG. 3 includes a controller 21, anoperation panel 22, an external interface (I/F) 23, a communication I/F24, a printer 25, and a scanner 26. The controller 21 includes a centralprocessing unit (CPU) 31 (an example of one or more processors), arandom access memory (RAM) 32, a read only memory (ROM) 33, anon-volatile random access memory (NVRAM) 34, and a hard disk drive(HDD) 35.

The ROM 33 is a non-volatile semiconductor memory that stores variousprograms and data. The RAM 32 is a volatile semiconductor memoryconfigured to temporarily store the program and the data. For example,setup information or the like is stored in the NVRAM 34. The HDD 35 is anon-volatile memory device that stores the various programs and data.

The CPU 31 reads the program, the data, setup information, or the likeinto the RAM 32 from the ROM 33, the NVRAM 34, the HDD 35, or the like,and executes the process. Thus, the CPU 31 is an arithmetic deviceimplementing control and a function of the entire device 20.

The operation panel 22 includes an input unit configured to receive aninput from the user and a display unit configured to display. Theexternal I/F 23 is an interface with the external device. The externaldevice includes a recording medium 23 a and so on. With this, the device20 can perform at least one of reading information from the recordingmedium 23 a through the external I/F 23 and writing the information tothe recording medium 23 a through the external I/F 23. The recordingmedium 23 a is, for example, an IC card, a flexible disk, a compact disc(CD), a digital versatile disc (DVD), a secure digital (SD) memory card,and a universal serial bus (USB) memory.

The communication I/F 24 is an interface coupling the device 20 with thenetwork. Thus, the device 20 can perform data communications through thecommunication I/F 24. The printer 25 is provided to print data. Thescanner 26 is a reading device that reads an original and generates anelectronic file (an image file).

The device 20 according to the first embodiment includes a hardwareconfiguration illustrated in FIG. 3 to realize various processesdescribed below.

<Service Provided by Service Providing System>

The service provided by the service providing system 10 according to thepresent embodiment is described. Hereinafter, a description is given ofa case where the device 20 is an image forming apparatus.

For example, the service providing system 10 according to the presentembodiment provides a service of performing an Optical CharacterRecognition (OCR) process on an electronic file that has been generatedby scanning an original document at the device 20, and then storing theelectronic file in the external storage system 30 ₁ (storage A).

The following description is given based on the assumption that theservice providing system 10 according to the present embodiment providesthe above-described service (hereinafter, also referred to as an “OCRdelivery A” service).

However, the service provided by the service providing system 10 is notlimited as such. For example, the service providing system 10 mayprovide a service of performing an OCR process on an electronic filethat has been generated by scanning an original document at the device20, and then sending the electronic file by mail to a predetermined mailaddress. Furthermore, for example, the service providing system 10 mayprovide a service of printing an electronic file, which is stored in theexternal storage system 30, by the device 20.

<Functional Configuration>

Next, a description is given of a functional configuration of theinformation processing system 1 according to the present embodiment, byreferring to FIG. 4. FIG. 4 illustrates a functional configuration of anexample of the information processing system 1 according to the presentembodiment.

The device 20 illustrated in FIG. 4 includes a web browser 210(hereinafter, simply referred to as a “browser 210”) executed by, forexample, the CPU 31, etc. The user of the device 20 is able to use aservice provided by the service providing system 10, by using thebrowser 210.

In this way, the device 20 according to the present embodiment canfunction by having the browser 210 installed. Therefore, in the device20 according to the present embodiment, for example, there is no need toinstall an exclusive-use application program, etc., for using a serviceprovided by the service providing system 10.

The service providing system 10 illustrated in FIG. 4 includes an inputoutput service processing unit 110, a web service processing unit 120, adocument service unit 130, and an external service cooperating unit 140.These units are implemented by processes that the CPU 16 is caused toexecute by one or more programs installed in the service providingsystem 10.

Furthermore, the service providing system 10 includes an applicationinformation storage unit 150 and a screen information storage unit 160.These storage units can be implemented by the HDD 18. Note that at leastone storage unit among the application information storage unit 150 andthe screen information storage unit 160 may be implemented by a storagedevice, etc., that is coupled to the service providing system 10 via anetwork.

The input output service processing unit 110 performs a process relevantto a service provided by the service providing system 10. Here, theinput output service processing unit 110 includes an applicationmanaging unit 111, a logic processing unit 112, and a data I/F unit 113.

The application managing unit 111 manages application information 1000stored in the application information storage unit 150. Note that theapplication information 1000 is an application for providing a serviceimplemented by a sequence of processes. That is, various servicesprovided by the service providing system 10 are provided according tothe application information 1000.

Furthermore, the application managing unit 111 returns process flowinformation 1100 included in the application information 1000, inresponse to a request from the logic processing unit 112. Note that theprocess flow information 1100 is information defining a sequence ofprocesses for implementing a service provided according to theapplication information 1000.

The logic processing unit 112 acquires the process flow information1100, which is included in the application information 1000, from theapplication managing unit 111, in response to a request from the webservice processing unit 120. Then, the logic processing unit 112executes a sequence of processes (a process flow) for implementing aservice provided according to the application information 1000, based onthe process flow information 1100 acquired from the application managingunit 111. Accordingly, the service providing system 10 according to thepresent embodiment is able to provide various services. Note thatdetails of the logic processing unit 112 are described below.

The data I/F unit 113 makes various requests (for example, a request toacquire a folder list, etc.) to a data processing unit 142 of theexternal service cooperating unit 140, in response to a request from theweb service processing unit 120.

The web service processing unit 120 returns screen information 2000stored in the screen information storage unit 160, in response to arequest from the browser 210. Note that the screen information 2000 isinformation defining a screen (application screen) for using a serviceprovided according to the application information 1000. In the screeninformation 2000, an application screen is defined in a formatinterpretable by the browser 210, such as HyperText Markup Language(HTML), Extensible HyperText Markup Language (XHTML), Cascading StyleSheets (CSS), and JavaScript (registered trademark).

Accordingly, on the operation panel 22 of the device 20, an applicationscreen for using a service provided by the service providing system 10,is displayed by the browser 210.

Furthermore, the web service processing unit 120 makes various requeststo the input output service processing unit 110, in response to arequest from the browser 210. For example, the web service processingunit 120 makes a request to execute a process flow for implementing the“OCR delivery A” service to the logic processing unit 112 of the inputoutput service processing unit 110, in response to a request from thebrowser 210.

The document service unit 130 executes predetermined processes includedin a sequence of processes (process flow) based on the process flowinformation 1100. The document service unit 130 includes an OCRprocessing unit 131. The OCR processing unit 131 performs an OCR processon an electronic file (image file).

Note that the document service unit 130 may also include, for example, adata converting unit for converting a data format of an electronic fileinto a predetermined data format, a compression/decompression processingunit for compressing or decompressing an electronic file, and a maildelivering unit for delivering a mail, to which an electronic file isattached, etc.

As described above, the document service unit 130 includes variousfunctional units for executing predetermined processes included in asequence of processes (process flow). Therefore, the document serviceunit 130 is implemented by a group of programs (modules) for providingthe various functions.

The external service cooperating unit 140 makes various requests (forexample, a request to acquire a folder list, etc.) to the externalstorage system 30, in response to a request from the logic processingunit 112 and the data I/F unit 113.

The service providing system 10 according to the present embodimentincludes the external service cooperating unit 140 corresponding to eachexternal storage system 30 that performs processes in cooperation withthe service providing system 10. That is, the service providing system10 according to the present embodiment includes the external servicecooperating unit 140 ₁ for making various requests to the externalstorage system 30 ₁. Similarly, the service providing system 10according to the present embodiment includes the external servicecooperating unit 140 ₂ for making various requests to the externalstorage system 30 ₂, etc.

Note that in the following, when each of the plurality of externalservice cooperating units 140 is distinguished, a suffix is added suchas the “external service cooperating unit 140 ₁” and the “externalservice cooperating unit 140 ₂”.

Here, the external service cooperating unit 140 includes a fileprocessing unit 141 for receiving a request from the logic processingunit 112 and the data processing unit 142 for receiving a request fromthe data I/F unit 113.

The file processing unit 141 includes a common I/F 1411 and a unique I/F1412, defining an application programming interface (API) for conductinga file operation (e.g., an acquisition operation, a storage operation,and an edit operation) to the electronic file stored in the externalstorage system 30.

The common I/F 1411 is an API commonly used among the plurality ofexternal storage systems 30 as, for example, the API illustrated in FIG.5A. That is, the common I/F 1411 of the file processing unit 141 is agroup of APIs for using a function (e.g., a file acquisition function,and a file storage function) related to the file operation which can beused by all of the external storage systems 30.

The unique I/F 1412 is an API used by a specific external storage system30 as, for example, the API illustrated in FIG. 5B. That is, the uniqueI/F 1412 of the file processing unit 141 is an API group of APIs forusing a function (e.g., adding a file to a document) related to the fileoperation that can be used in the specific external storage system 30.

Therefore, the common I/F 1411 is similarly defined for all the externalservice cooperating units 140. On the other hand, the unique I/F 1412 isdefined for the external service cooperating unit 140 corresponding tothe specific external storage system 30, in which the API defined by theunique I/F 1412 can be used.

The data processing unit 142 includes a common I/F 1421 and a unique I/F1422, in which an API for acquiring meta data (e.g., a file list and afolder list) of bibliographic information of the electronic file storedin the external storage system 30 is defined.

The common I/F 1421 is an API commonly used among the plurality ofexternal storage systems 30 as, for example, the API illustrated in FIG.50. That is, the common I/F 1421 of the data processing unit 142 is anAPI group of APIs for using a function (e.g., a function of acquiring alist of files and a function of acquiring a list of folders) related tometa data acquisition that can be used by all the external storagesystems 30.

The unique I/F 1422 is an API, which can be used by the specificexternal storage system 30, such as the API illustrated in FIG. 5D. Thatis, the unique I/F 1422 of the data processing unit 142 is an API groupof APIs for using a function (e.g., a function of acquiring a list ofimage files), which is related to acquisition of metadata that can beused by the specific external storage system 30.

Therefore, the common I/F 1421 is similarly defined for all the externalservice cooperating units 140. On the other hand, the unique I/F 1422 isdefined for the external service cooperating unit 140 corresponding tothe specific external storage system 30, in which the API defined by theunique I/F 1422 can be used.

As described above, the service providing system 10 according to thepresent embodiment includes the external service cooperating units 140respectively corresponding to the external storage systems 30, whichrespectively perform processes in cooperation with the service providingsystem 10. Therefore, in a case where the external storage system 30 tobe the cooperation destination is added or deleted (hereinafter,referred to as an “addition, etc.”), the external service cooperatingunit 140, which corresponds to the external storage system 30 to beadded, is to be added to the service providing system 10.

Therefore, in the service providing system 10 according to the presentembodiment, the influence caused by the addition, etc., of the externalstorage system 30, which is to be the cooperation destination, can belocalized. That is, in the service providing system 10 according to thepresent embodiment, the addition, etc., of the external storage system30, which is to be the cooperation destination, can be done withoutinfluencing the other functional units (i.e., the input output serviceprocessing unit 110 and the document service unit 130, etc.). Note thatthe addition, etc., of the external service cooperating unit 140 may beperformed by using a Software Development Kit (SDK).

Furthermore, the file processing unit 141 of the external servicecooperating unit 140 defines the common I/F 1411 and the unique I/F 1412by different modules, etc. Furthermore, the API defined by the commonI/F 1411 and the unique I/F 1412 may be used by specifying an “externalstorage name” (a name of a storage service provided by the externalstorage system 30). That is, in the API defined by the common I/F 1411and the unique I/F 1412, the “external storage name” is the variablepart.

Therefore, when adding the external service cooperating unit 140, thecommon I/F 1411 defined in the file processing unit 141 of anotherexternal service cooperating unit 140 can be reused. That is, whenadding the external service cooperating unit 140, the file processingunit 141 of the external service cooperating unit 140 to be added onlyneeds to develop the unique I/F 1412. Note that the same applies withrespect to the common I/F 1421 and the unique I/F 1422.

The application information storage unit 150 stores the applicationinformation 1000. The application information 1000 is stored in theapplication information storage unit 150, in association with anapplication ID for identifying the application information 1000. Notethat the application information 1000 may also be associated with thename of the application information 1000 (application name).

Here, the application information 1000 includes the process flowinformation 1100. For example, the application information 1000 forproviding the “OCR delivery A” service includes the process flowinformation 1100 in which a sequence of processes for implementing thisservice is defined. That is, the application information 1000 forproviding the “OCR delivery A” service includes the process flowinformation 1100 defining a process of performing an OCR process on anelectronic file generating by a scanning process, and then storing(uploading) the electronic file in the external storage system 30 ₁.Note that the application information 1000 may include two or moreprocess flow information items 1100.

As described above, the process flow information 1100 is informationdefining a sequence of processes (process flow) for implementing aservice provided according to the application information 1000. Notethat details of the process flow information 1100 are described below.

The screen information storage unit 160 stores the screen information2000. The screen information 2000 is stored in the screen informationstorage unit 160, in association with an application ID. Note thatdetails of the screen information 2000 are described below.

Note that the input output service processing unit 110, the web serviceprocessing unit 120, the document service unit 130, the external servicecooperating unit 140, the application information storage unit 150, andthe screen information storage unit 160 may be respectively implementedby different information processing apparatuses.

Here, a description is given of details of the functional configurationof the logic processing unit 112, by referring to FIG. 6. FIG. 6illustrates a functional configuration of an example of the logicprocessing unit 112 according to the present embodiment.

The logic processing unit 112 illustrated in FIG. 6 includes a flowexecuting unit 301, a component managing unit 302, a component group303, a format conversion managing unit 304, and a format conversiongroup 305. Furthermore, the logic processing unit 112 includes a formatconversion information table 3000.

When the flow executing unit 301 receives a process flow executionrequest from the web service processing unit 120, the flow executingunit 301 acquires, from the application managing unit 111, the processflow information 1100 corresponding to the execution request. Then, theflow executing unit 301 executes a sequence of processes (process flow)based on the process flow information 1100 acquired from the applicationmanaging unit 111.

At this time, the flow executing unit 301 provisionally executes thesequence of processes (process flow) based on the process flowinformation 1100, and when an error, etc., does not occur in theprovisional execution, the flow executing unit 301 formally executes thesequence of processes (process flow).

Here, provisional execution means to execute the sequence of processesin order to confirm the formalities of the processes included in thesequence of processes, before formally executing the sequence ofprocesses (process flow) based on the process flow information 1100. Onthe other hand, formal execution means to execute the sequence ofprocesses for implementing a service provided according to theapplication information 1000, when formalities of the processes,included in the sequence of processes (process flow) based on theprocess flow information 1100, have been confirmed.

Furthermore, a sequence of processes based on the process flowinformation 1100 is executed by combining components for executing theprocesses included in the sequence of processes. Note that confirmingthe formalities of the processes included in the sequence of processesmeans, for example, to confirm the compatibility of parameterinformation with respect to the components for executing the processes,etc. Note that a component is implemented by programs and modules, etc.,for executing processes for implementing a predetermined function, and acomponent is defined by, for example, a class and a function, etc.

The component managing unit 302 manages components. The componentmanaging unit 302 generates a component and returns the generatedcomponent to the flow executing unit 301, in response to a request fromthe flow executing unit 301. Note that generating a component meansloading a component defined by, for example, a class and a function,etc., in a memory (for example, the RAM 14).

The component group 303 is an assembly of components. The componentgroup 303 includes an OCR component 1310 and a delivery A component1320.

The OCR component 1310 is a component for performing an OCR process onan electronic file. The OCR component 1310 requests the OCR processingunit 131 of the document service unit 130 to execute an OCR process, inorder to perform an OCR process on an electronic file.

The delivery A component 1320 is a component for storing (uploading) anelectronic file in the external storage system 30 ₁ (storage A). Thedelivery A component 1320 uploads an electronic file, by requesting thefile processing unit 141 of the external service cooperating unit 140 ₁corresponding to the external storage system 30 ₁, to upload anelectronic file.

Note that the component group 303 also includes various components suchas a conversion component for converting the data format of anelectronic file into a predetermined data format, and a compressioncomponent for compressing an electronic file, etc., other than the abovecomponents. Furthermore, the component group 303 includes, for example,a delivery B component for storing (uploading) an electronic file in theexternal storage system 30 ₂ (storage B). Furthermore, the componentgroup 303 includes, for example, an acquisition A component foracquiring (downloading) an electronic file from the external storagesystem 30 ₁ (storage A).

As described above, the component group 303 includes various componentsfor executing processes for implementing predetermined functions.

Furthermore, each component included in the component group 303 includesa component common I/F 1300. The component common I/F 1300 is an APIthat is commonly defined for the components, and includes an API forgenerating a component and an API for requesting to execute a process ofthe component.

As described above, the components include the component common I/F1300, and therefore the influence caused by the addition, etc., of acomponent can be localized. That is, for example, the addition, etc., ofa component can be performed without influencing the flow executing unit301 or the component managing unit 302, etc. Accordingly, in the serviceproviding system 10 according to the present embodiment, the developmentlabor hours associated with the addition, etc., of a predeterminedfunction, etc., (that is, the addition, etc., of a component forexecuting processes for implementing the function) can be reduced.

The format conversion managing unit 304 manages the format conversion ofthe data format. Here, the data format that each component can handle isdefined in advance. Therefore, in response to a request from acomponent, the format conversion managing unit 304 refers to the formatconversion information table 3000, for example, as illustrated in FIG.7, and generates a format conversion to be included in the formatconversion group 305.

Then, the format conversion managing unit 304 requests the generatedformat conversion to execute a format conversion process. Note thatformat conversion is a program and a module, etc. for executing a formatconversion process of converting the data format, and is defined by, forexample, a class and a function, etc. Furthermore, the generation offormat conversion means, for example, to load the format conversiondefined by a class, in a memory (for example, the RAM 14).

Note that examples of data formats are a data format “InputStream”indicating stream data, “LocalFilePath” indicating the path (address) ofthe electronic file stored in a storage device, etc., and “File”indicating the entity of an electronic file, etc.

Here, a description is given of the format conversion information table3000, by referring to FIG. 7. FIG. 7 illustrates an example of theformat conversion information table 3000.

The format conversion information table 3000 illustrated in FIG. 7includes the data items of a data format before conversion, a dataformat after conversion, and a conversion format conversion to begenerated. That is, the format conversion information stored in theformat conversion information table 3000 is information in which aformat conversion, which is for converting a data format beforeconversion into a data format after conversion, is associated with eachdata format before conversion and each data format after conversion.

The format conversion group 305 is an assembly of format conversions.The format conversion group 305 includes a first format conversion 1410for converting the data format “InputStream” into “LocalFilePath”. Notethat the format conversion group 305 also includes a second formatconversion for converting the data format “LocalFilePath” into “File”,etc.

Furthermore, each format conversion included in the format conversiongroup 305 includes a format conversion common I/F 1400. The formatconversion common I/F 1400 is an API that is commonly defined for theformat conversions. The format conversion common I/F 1400 includes anAPI for generating a format conversion and an API for executing a formatconversion process of the format conversion.

As described above, each format conversion includes the formatconversion common I/F 1400, and therefore the influence caused by theaddition, etc., of a format conversion can be localized. That is, forexample, the addition, etc., of a format conversion can be performedwithout influencing the format conversion managing unit 304, etc.Accordingly, in the service providing system 10 according to the presentembodiment, the development labor hours associated with the addition,etc., of a format conversion can be reduced.

Here, a description is given of the process flow information 1100included in the application information 1000 for providing the “OCRdelivery A” service, by referring to FIG. 8. FIG. 8 illustrates anexample of the process flow information 1100 in which a sequence ofprocesses for implementing the “OCR delivery A” service is defined.

The process flow information 1100 illustrated in FIG. 8 is informationin which a sequence of processes (process flow) for implementing the“OCR delivery A” service is defined.

The process flow information 1100 illustrated in FIG. 8 includes a flowID 1101 for identifying the process flow information 1100 and a flowname 1102 indicating the name of the sequence of processes (processflow) based on the process flow information 1100. Furthermore, theprocess flow information 1100 illustrated in FIG. 8 includes flowdetails 1103 in which process contents of the processes included in thesequence of processes (process flow) are defined.

The flow details 1103 include a process definition 1104 and a processdefinition 1105 defining the respective processes included in theprocess flow. Furthermore, the process definition 1104 and the processdefinition 1105 include “component” indicating the component name of thecomponent executing the process and “parameters” defining the parameterinformation with respect to the component.

Specifically, at “component” in the process definition 1104, thecomponent name “ocr” of the OCR component 1310 is defined. Furthermore,at “parameters” in the process definition 1104, the parameterinformation of the parameter name “language” and the parameterinformation of the parameter name “outputType” are defined.

Furthermore, in the parameter information of the parameter name“language”, “English”, which indicates that the language of the OCRprocess is English, is defined as a parameter value. Similarly, in theparameter information of the parameter name “outputType”, “pdf”, whichindicates that the file format after the OCR process is a PDF format, isdefined as a parameter value.

Similarly, at “component” in the process definition 1105, the componentname “uploadFileA” of the delivery A component 1320 is defined.Furthermore, at “parameters” in the process definition 1105, theparameter information of the parameter name “filename” and the parameterinformation of the parameter name “folder” are defined.

Furthermore, in the parameter information of the parameter name“filename”, “null”, which indicates that the name (file name) of theelectronic file to be uploaded is not set, is defined as a parametervalue. Similarly, in the parameter information of the parameter name“folder”, “null”, which indicates that the upload destination (storagedestination) folder is not set, is defined as a parameter value.

As described above, in the process flow information 1100, the processdefinitions of the respective processes forming the sequence ofprocesses (process flow) are defined. Accordingly, the service providingsystem 10 according to the present embodiment can execute a sequence ofprocesses for implementing a service provided according to theapplication information 1000, by performing processes by the respectivecomponents according to the process definitions included in the processflow information 1100.

Note that the processes defined in the process definitions included inthe process flow information 1100 illustrated in FIG. 8 are executed inan order starting from the top process. That is, the processes in asequence of processes based on the process flow information 1100 in FIG.8 are executed in the order of the process defined in the processdefinition 1104 and the process defined in the process definition 1105.However, the order of executing the processes is not limited as such;for example, the process flow information 1100 may include informationdefining the order of executing the processes defined in each processdefinition.

<Process Details>

Next, a description is given of details of processes by the informationprocessing system 1 according to the present embodiment. In thefollowing, a description is given of the overall process in a case wherea user of the device 20 uses the “OCR delivery A” service, by referringto FIG. 9. FIG. 9 is a sequence diagram of an example of the overallprocess of the “OCR delivery A” service according to the presentembodiment.

First, the browser 210 of the device 20 accepts an operation (displayoperation) for displaying an application screen of the “OCR delivery A”service (step S901).

When the browser 210 of the device 20 accepts the display operation, thebrowser 210 sends a request to acquire screen information for displayingan application screen of the “OCR delivery A” service, to the webservice processing unit 120 (step S902). Note that this acquisitionrequest is, for example, a Hypertext Transfer Protocol (HTTP) request,and a Uniform Resource Locator (URL) of the application information 1000providing the “OCR delivery A” service is specified. At this time, theacquisition request may include the application ID of the applicationinformation 1000 for providing the “OCR delivery A” service.

When the web service processing unit 120 receives the request to acquirescreen information, the web service processing unit 120 acquires, fromthe screen information storage unit 160, the screen information 2000associated with the application ID corresponding to the URL specified inthe acquisition request (step S903). Then, the web service processingunit 120 returns the screen information 2000 acquired from the screeninformation storage unit 160, to the browser 210. That is, the browser210 returns a HTTP response including the screen information 2000acquired from the screen information storage unit 160, to the browser210.

Here, a description is given of the screen information 2000 fordisplaying an application screen of the “OCR delivery A” service, byreferring to FIG. 10. FIG. 10 illustrates an example of the screeninformation 2000 for displaying an application screen of the “OCRdelivery A” service.

The screen information 2000 illustrated in FIG. 10 is informationdefined in a HTML format. The screen information 2000 illustrated inFIG. 10 includes a INPUT tag 2001 for displaying a text box forinputting a file name, a SELECT tag 2002 for displaying a field forselecting the storage destination folder, and a BUTTON tag 2003 fordisplaying a button for executing scanning.

Accordingly, as described below, the information of the folders includedin the folder list acquired from the external storage system 30 ₁, isdefined as selection elements in the SELECT tag 2002, to display anapplication screen for using the “OCR delivery A” service.

When the browser 210 of the web service processing unit 120 receives thescreen information 2000, the browser 210 sends a request to acquireinformation for displaying an application screen, to the web serviceprocessing unit 120 (step S904).

Note that information for displaying an application screen includes theselection elements to be included in the selection field of theapplication screen. In the present embodiment, a folder list includingcandidates of storage destination folders of an electronic file in the“OCR delivery A” service, is acquired as a selection element from theexternal storage system 30 ₁ (storage A).

When the web service processing unit 120 receives the request to acquirethe information for displaying an application screen, the web serviceprocessing unit 120 sends the acquisition request to the data I/F unit113 (step S905).

When the data I/F unit 113 receives the request to acquire theinformation for displaying an application screen, the data I/F unit 113sends a request to acquire a folder list of folders in the storage A, tothe data processing unit 142 of the external service cooperating unit140 (step S906).

Note that the data I/F unit 113 sends the request to acquire a folderlist to the data processing unit 142 of the external service cooperatingunit 140 ₁ corresponding to the storage A (external storage system 30₁). That is, for example, the data I/F unit 113 uses the API defined inthe common I/F 1421 as “storageA/data/folders”, to send the request toacquire the folder list.

When the data processing unit 142 of the external service cooperatingunit 140 receives the request to acquire a folder list, the dataprocessing unit 142 sends the request to acquire a folder list to theexternal storage system 30, to acquire the folder list (step S907).Then, the data processing unit 142 returns the acquired folder list tothe browser 210, via the data I/F unit 113 and the web serviceprocessing unit 120.

When the browser 210 of the device 20 receives the folder list, thebrowser 210 displays an application screen on the operation panel 22,based on the received folder list and the screen information 2000returned in step S903 (step S908). That is, for example, the browser 210defines the folder IDs included in the folder list as values (VALUES) inthe OPTION tag, in the SELECT tag 2002 in the screen information 2000 ofFIG. 10, and displays the application screen based on the screeninformation 2000.

Accordingly, the browser 210 displays an application screen 2100, forexample, as illustrated in FIG. 11, on the operation panel 22 of thedevice 20. FIG. 11 illustrates an example of the application screen 2100for using the “OCR delivery A” service.

The application screen 2100 illustrated in FIG. 11 is a screen for usingthe “OCR delivery A” service. The application screen 2100 illustrated inFIG. 11 includes a text box 2101 for inputting a file name of theelectronic file to be uploaded in the storage A, and a selection field2102 for selecting the storage destination folder in the storage A.Furthermore, the application screen 2100 illustrated in FIG. 11 includesa scan button 2103 for executing scanning.

Note that the text box 2101, the selection field 2102, and the scanbutton 2103 are displayed as the browser 210 respectively interprets theINPUT tag 2001, the SELECT tag 2002, and the BUTTON tag 2003.

As described above, the service providing system 10 according to thepresent embodiment returns the screen information 2000 that is definedin a format that is interpretable by the browser 210, such as the HTMLformat, etc., in response to a request from the browser 210 of thedevice 20. Then, the device 20 displays the application screen 2100 forusing the service, based on the screen information 2000 returned fromthe service providing system 10. Therefore, the user is able to use aservice provided by the service providing system 10, by using the device20 in which the general-purpose browser 210 is installed.

When a file name is input in the text box 2101, a storage destinationfolder is selected from the selection field 2102, and the scan button2103 is pressed, the browser 210 of the device 20 accepts user specifiedinformation and a scan execution operation (step S909). Note that userspecified information is the file name specified in the text box 2101and the folder ID of the storage destination folder specified in theselection field 2102.

For example, it is assumed that “sample.pdf” is specified in the textbox 2101 and “Folder1” (folder ID “folder1”) is specified in theselection field 2102. In this case, the user specified informationincludes, for example, “filename”:“sample.pdf” and “folder”:“folder1”.

When the browser 210 of the device 20 accepts the scan executionoperation, the scanner 26 reads an original document and generates anelectronic file (image file) (step S910).

Next, when the electronic file is generated, the browser 210 of thedevice 20 sends a request to execute a process flow to the web serviceprocessing unit 120 (step S911). Note that the execution request is, forexample, a HTTP request. The execution request includes the flow ID ofthe process flow information 1100 in which the sequence of processes forimplementing the “OCR delivery A” service is defined, the electronicfile generated in step S910, and the user specified information.

However, the request to execute the process flow may include, forexample, the URL of the application information 1000, the screen ID ofthe application screen 2100 displayed in step S908, and the button ID ofthe scan button 2103, etc., instead of the flow ID. That is, the requestto execute the process flow may include various types of identificationinformation, which can be converted into a flow ID in step S912described below, instead of the flow ID.

When the web service processing unit 120 receives the request to executethe process flow, the web service processing unit 120 sends this requestto the logic processing unit 112 of the input output service processingunit 110 (step S912). Note that for example, when the URL of theapplication information 1000, the screen ID of the application screen2100, and the button ID of the scan button 2103, etc., are included inthe request to execute the process flow, the web service processing unit120 converts this identification information into a flow ID.

Next, when the logic processing unit 112 of the input output serviceprocessing unit 110 receives the request to execute the process flow,the flow executing unit 301 sends a request to acquire process flowinformation to the application managing unit 111 (step S913). Note thatthis acquisition request includes the flow ID.

When the application managing unit 111 receives the acquisition requestfor the process flow information, the application managing unit 111acquires the process flow information 1100 identified by the flow IDincluded in the acquisition request, from the application informationstorage unit 150 (step S914).

Then, the application managing unit 111 returns the process flowinformation 1100, which has been acquired from the applicationinformation storage unit 150, to the logic processing unit 112. In thefollowing description, it is assumed that the application managing unit111 has returned the process flow information 1100 illustrated in FIG.8, to the logic processing unit 112.

Next, when the logic processing unit 112 receives the process flowinformation 1100 from the application managing unit 111, the logicprocessing unit 112 performs a process of executing the process flowbased on the process flow information 1100 (step S915).

That is, the logic processing unit 112 performs a process of executingthe sequence of processes (process flow) for implementing the “OCRdelivery A” service. At this time, the logic processing unit 112provisionally executes the sequence of processes (process flow) forimplementing the “OCR delivery A” service, and when an error, etc., doesnot occur in the provisional execution, the logic processing unit 112formally executes the sequence of processes (process flow), to performthe process of executing the process flow. Note that details of theexecution process of the process flow are described below.

Then, the logic processing unit 112 returns the processing result of theexecution process of the process flow to the browser 210, via the webservice processing unit 120. Accordingly, the service providing system10 according to the present, embodiment can provide various kinds ofservices (for example, the “OCR delivery A” service) implemented by thesequence of processes (process flow) based on the process flowinformation 1100.

Note that in the overall process of the “OCR delivery A” service of FIG.9, the browser 210 sends the request to execute the process flow to thelogic processing unit 112 via the web service processing unit 120;however, the present embodiment is not limited as such. For example, thebrowser 210 may call a Web API based on JavaScript, etc., defined in thescreen information 2000, to directly send the request to execute theprocess flow to the logic processing unit 112, without involving the webservice processing unit 120.

In the following, a detailed description is given of the process ofexecuting the process flow for implementing the “OCR delivery A” service(the process of step S915 in FIG. 9). Note that in the process ofexecuting the process flow, as described above, a sequence of processes(process flow) for implementing the “OCR delivery A” service isprovisionally executed, and when an error, etc., does not occur in theprovisional execution, the sequence of processes (process flow) isformally executed. Therefore, in the following, in the process ofexecuting the process flow in step S915 of FIG. 9, the stage ofprovisionally executing the sequence of processes is also referred to asa “provisional execution phase”, and the stage of formally executing thesequence of processes is also referred to as a “formal execution phase”.

First, a description is given of a case where the provisional executionphase is successfully ended, and subsequently, the formal executionphase is performed, in the process of executing the process flow forimplementing the “OCR delivery A” service, by referring to FIG. 12. FIG.12 is a sequence diagram of an example of the process of executing theprocess flow according to the present embodiment.

First, the flow executing unit 301 sends a request to acquire acomponent to the component managing unit 302, based on the process flowinformation 1100 returned from the application managing unit 111 in stepS914 of FIG. 9 (step S1201). That is, the flow executing unit 301 sends,to the component managing unit 302, a request to acquire a componentincluding “ocr” defined at “component” in the process definition 1104 inthe process flow information 1100 of FIG. 8.

When the component managing unit 302 receives the request to acquire acomponent, the component managing unit 302 generates the OCR component1310 corresponding to “ocr” included in the acquisition request (stepS1202). Note that the OCR component 1310 can be generated by using thecomponent common I/F 1300.

Then, the component managing unit 302 returns the generated OCRcomponent 1310 to the flow executing unit 301. That is, for example, thecomponent managing unit 302 returns an address in a memory (for example,the RAM 14) in which the OCR component 1310 is loaded, to the flowexecuting unit 301.

When the flow executing unit 301 receives the returned OCR component1310, the flow executing unit 301 sends a request to provisionallyexecute the component, to the OCR component 1310 (step S1203). Note thatthe request to provisionally execute the component is a request toprovisionally execute the OCR component 1310, and this request includesdata and parameter information.

Here, in step S1203 described above, the data is the electronic filereceived from the web service processing unit 120 (the electronic fileincluded in the request to execute the process flow), having a dataformat “InputStream”. That is, the flow executing unit 301 sends theelectronic file received from the web service processing unit 120 simplyas “data” (without considering the data format), to the OCR component1310. In the present embodiment, electronic files, etc., for which thedata format is not considered as described above, are simply referred toas “data”.

Furthermore, in step S1203 described above, the parameter information iseach of the parameter information items defined at “parameters” in theprocess definition 1104 in the process flow information 1100 of FIG. 8.That is, the request to execute the process of the component at stepS1203 described above includes parameter information“language”:“English” and parameter information “outputType”:“pdf”.

When the OCR component 1310 receives the request to provisionallyexecute the component, the OCR component 1310 uses the data and theparameter information included in the provisional execution request, toperform the provisional execution (step S1204).

Here, a description is given of the process of provisionally executingthe OCR component 1310, by referring to FIG. 13. FIG. 13 is a sequencediagram of an example of a process of provisionally executing the OCRcomponent 1310 according to the present embodiment.

The OCR component 1310 sends a format conversion request to the formatconversion managing unit 304 (step S1301). Note that the formatconversion request includes data and a specification of “LocalFilePath”indicating the data format that can be handled by the OCR component1310.

When the format conversion managing unit 304 receives the formatconversion request, the format conversion managing unit 304 checkswhether the data format of the data included in the format conversionrequest and the specified data format match each other (step S1302).

Here, the data format of the data included in the format conversionrequest is “InputStream”, while the specified data format is“LocalFilePath”. Therefore, the format conversion managing unit 304determines that the data format of the data included in the formatconversion request and the specified data format do not match eachother.

Then, the format conversion managing unit 304 refers to the formatconversion information table 3000 illustrated in FIG. 7, and identifiesthe format conversion for converting the data format “InputStream” to“LocalFilePath” (here, the first format conversion 1410 is identified).Then, the format conversion managing unit 304 generates the identifiedfirst format conversion 1410 (step S1303). Note that the first formatconversion 1410 may be generated by using the format conversion commonI/F 1400.

Next, the format conversion managing unit 304 sends a request to executea format conversion process to the first format conversion 1410 (stepS1304). Note that the execution request includes data.

When the first format conversion 1410 receives the request to executeformat conversion, the first format conversion 1410 performs a formatconversion process of converting the data format of the data included inthe execution request, from “InputStream” to “LocalFilePath” (stepS1305). Then, the first format conversion 1410 returns the data forwhich the data format has been converted, to the format conversionmanaging unit 304.

Then, when the format conversion managing unit 304 receives the datafrom the first format conversion 1410, the format conversion managingunit 304 sends the data to the OCR component 1310 (step S1306).

When the OCR component 1310 receives the data from the format conversionmanaging unit 304, the OCR component 1310 uses the data and theparameter information to perform a process of provisionally executing anOCR process (step S1307).

Here, for example, the OCR component 1310 checks the data and checks theparameter information, etc., as the process of provisionally executingan OCR process. That is, for example, the OCR component 1310 performsthe data check by checking whether the number of pages, the number offiles, and the size, etc., of the electronic file indicated by the data(data format “LocalFilePath”) exceed the upper limit that is set inadvance. Furthermore, for example, the OCR component 1310 performs theparameter information check by checking whether the OCR language (theparameter value of the parameter information “language”) and the outputdata format (the parameter value of the parameter information“outputType”) are supported, etc.

Note that the OCR component 1310 may change the data, which is receivedfrom the flow executing unit 301, into lighter data (data of a smallersize), and use the changed data to perform the OCR process. Furthermore,the OCR component 1310 may store the result obtained by performing anOCR process by using the light data (that is, the electronic fileobtained by performing an OCR process on the electronic file indicatedby the light data), and use this stored data in the formal executionprocess.

As described above, the OCR component 1310 performs a provisionalexecution process such as data check and parameter information check,etc.

Then, the OCR component 1310 returns data indicating the processingresult of the provisional execution, to the flow executing unit 301.Here, for example, when the OCR component 1310 determines, by the datacheck, that the number of pages, the number of files, and the size,etc., of the electronic file exceed the upper limit that is set inadvance, the OCR component 1310 returns data indicating that an errorhas occurred, to the flow executing unit 301. Similarly, for example,when the OCR component 1310 determines, by the parameter informationcheck, that the OCR language and the output data format specified by theparameter values are not supported, the OCR component 1310 returns dataindicating that an error has occurred, to the flow executing unit 301.

Referring back to FIG. 12, when the flow executing unit 301 receivesdata from the OCR component 1310, the flow executing unit 301 determineswhether to continue the process of executing the process flow (stepS1205). That is, the flow executing unit 301 determines whether the datareturned from the OCR component 1310 indicates that an error, etc., hasoccurred.

Here, in step S1205 described above, when the flow executing unit 301determines that the data returned from the OCR component 1310 indicatesthat an error, etc., has occurred, the flow executing unit 301 reportsto the device 20 that an error, etc., has occurred, and ends theprocess. Conversely, when the flow executing unit 301 determines thatthe data returned from the OCR component 1310 does not indicate that anerror, etc., has occurred, the flow executing unit 301 continues theprocess. The following description is continued assuming that the flowexecuting unit 301 has determined that the data returned from the OCRcomponent 1310 does not indicate that an error, etc., has occurred.

The flow executing unit 301 sends a request to acquire a component tothe component managing unit 302, based on the process flow information1100 returned from the application managing unit 111 in step S914 inFIG. 9 (step S1206). That is, the flow executing unit 301 sends, to thecomponent managing unit 302, a request to acquire a component including“uploadFileA” defined in “component” in the process definition 1105 inthe process flow information 1100 of FIG. 8.

When the component managing unit 302 receives the request to acquire acomponent, the component managing unit 302 generates the delivery Acomponent 1320 corresponding to “uploadFileA” included in theacquisition request (step S1207). Note that the delivery A component1320 may be generated by using the component common I/F 1300.

Then, the component managing unit 302 returns the generated delivery Acomponent 1320 to the flow executing unit 301. That is, for example, thecomponent managing unit 302 returns an address in a memory (for example,the RAM 14) in which the delivery A component 1320 is loaded, to theflow executing unit 301.

When the flow executing unit 301 receives the returned delivery Acomponent 1320, the flow executing unit 301 sends a request toprovisionally execute the component, to the delivery A component 1320(step S1208). Note that the request to provisionally execute thecomponent is a request to provisionally execute the delivery A component1320, and this request includes data and parameter information.

Here, in step S1208 described above, the data is the data returned fromthe OCR component 1310.

Furthermore, in step S1208 described above, the parameter information iseach of the parameter information items defined at “parameters” in theprocess definition 1105 in the process flow information 1100 of FIG. 8.

That is, the request to provisionally execute the component in stepS1208 described above includes parameter information “filename”:null andparameter information “folder”:null. Furthermore, the request toprovisionally execute the component in step S1208 described aboveincludes user specified information “filename”:“sample.pdf” and userspecified information “folder”:“folder1” received from the web serviceprocessing unit 120.

When the delivery A component 1320 receives the request to provisionallyexecute the component, the delivery A component 1320 uses the data, theparameter information, and the user specified information included inthe provisional execution request, to perform the provisional execution(step S1209).

Here, a description is given of the process of provisionally executingthe delivery A component 1320, by referring to FIG. 14. FIG. 14 is asequence diagram of an example of a process of provisionally executingthe delivery A component 1320 according to the present embodiment.

When the delivery A component 1320 receives the request to provisionallyexecute the component, the delivery A component 1320 sends a formatconversion request to the format conversion managing unit 304 (stepS1401). Note that the format conversion request includes data and aspecification of “LocalFilePath” indicating the data format that can behandled by the delivery A component 1320.

When the format conversion managing unit 304 receives the formatconversion request, the format conversion managing unit 304 checkswhether the data format of the data included in the format conversionrequest and the specified data format match each other (step S1402).

Here, the data format of the data included in the format conversionrequest is “LocalFilePath”, and the specified data format is also“LocalFilePath”. Therefore, the format conversion managing unit 304determines that the data format of the data included in the formatconversion request and the specified data format match each other.

Then, the format conversion managing unit 304 sends the data included inthe format conversion request, to the delivery A component 1320 (stepS1403). As described above, when the format conversion managing unit 304determines, in the process of checking the data format (the process ofstep S1402), that the data format of the data and the specified dataformat match each other, the format conversion managing unit 304 doesnot generate format conversion.

When the delivery A component 1320 receives data from the formatconversion managing unit 304, the delivery A component 1320 uses thedata, the parameter information, and the user specified information toperform a process of provisionally executing an uploading process to thestorage A (step S1404). At this time, the delivery A component 1320defines the user specified information in the parameter information as“filename”:“sample.pdf” and “folder”:“folder1”.

Here, for example, the delivery A component 1320 checks the data andchecks the parameter information, etc., as the process of provisionallyexecuting an uploading process to the storage A. That is, for example,the delivery A component 1320 performs the data check by checkingwhether the number of pages, the number of files, and the size, etc., ofthe data (the electronic file indicated by the data format“LocalFilePath”) exceed the upper limit that is set in advance.Furthermore, for example, the delivery A component 1320 performs theparameter information check by checking whether the file name (theparameter value of parameter information “filename”) includes charactersthat cannot be used, etc. Furthermore, for example, the delivery Acomponent 1320 performs the parameter information check by checkingwhether the storage destination folder (the parameter value of parameterinformation “folder”) exists, etc.

Note that, for example, the delivery A component 1320 may confirm thecoupling status with respect to the external storage system 30 ₁(confirm whether data communication is possible with the externalstorage system 30 ₁), as the process of provisionally executing theuploading process to the storage A. Furthermore, the delivery Acomponent 1320 may change the data, which is received from the flowexecuting unit 301, into lighter data (data of a smaller size), and usethe changed data to perform the process of provisionally executing theuploading process to the storage A. Furthermore, the delivery Acomponent 1320 may store the light data, and use this stored data in theformal execution process.

As described above, the delivery A component 1320 performs a provisionalexecution process such as data check and parameter information check,etc.

Then, the delivery A component 1320 returns data indicating theprocessing result of the provisional execution, to the flow executingunit 301. Here, for example, when the delivery A component 1320determines, by the data check, that the number of pages, the number offiles, and the size, etc., of the electronic file exceed the upper limitthat is set in advance, the delivery A component 1320 returns dataindicating that an error has occurred, to the flow executing unit 301.Similarly, for example, when the delivery A component 1320 determines,by the parameter information check, that the file name specified in theparameter value includes characters that cannot be used, etc., thedelivery A component 1320 returns data indicating that an error hasoccurred, to the flow executing unit 301. Furthermore, similarly, forexample, when the delivery A component 1320 determines, by the parameterinformation check, that the storage destination folder specified in theparameter value does not exist, etc., the delivery A component 1320returns data indicating that an error has occurred, to the flowexecuting unit 301.

Referring back to FIG. 12, when the flow executing unit 301 receivesdata from the delivery A component 1320, the flow executing unit 301determines whether to continue the process of executing the process flow(step S1210). That is, the flow executing unit 301 determines whetherthe data returned from the delivery A component 1320 indicates that anerror, etc., has occurred.

Here, in step S1210 described above, when the flow executing unit 301determines that the data returned from the delivery A component 1320indicates that an error, etc., has occurred, the flow executing unit 301reports to the device 20 that an error, etc., has occurred, and ends theprocess. Conversely, when the flow executing unit 301 determines thatthe data returned from the delivery A component 1320 does not indicatethat an error, etc., has occurred, the flow executing unit 301 continuesthe process. The following description is continued assuming that theflow executing unit 301 has determined that the data returned from thedelivery A component 1320 does not indicate that an error, etc., hasoccurred.

The flow executing unit 301 sends a request to formally execute thecomponent, to the OCR component 1310 (step S1211). Note that the requestto formally execute the component includes data and parameterinformation.

As described above, when an error, etc., has not occurred in theprovisional execution phase, the flow executing unit 301 performs aformal execution phase.

Here, in step S1211 described above, the data is the electronic filereceived from the web service processing unit 120 (the electronic fileincluded in the request to execute the process flow), having a dataformat “InputStream”.

Furthermore, in step S1211 described above, the parameter information iseach of the parameter information items defined at “parameters” in theprocess definition 1104 in the process flow information 1100 of FIG. 8.That is, the execution request for the component at step S1211 describedabove includes parameter information “language”:“English” and parameterinformation “outputType”:“pdf”.

When the OCR component 1310 receives the request to formally execute thecomponent, the OCR component 1310 uses the data and the parameterinformation included in the formal execution request, to perform theformal execution (step S1212).

Here, a description is given of the process of formally executing theOCR component 1310, by referring to FIG. 15. FIG. 15 a sequence diagramof an example of a process of formally executing the OCR component 1310according to the present embodiment.

When the OCR component 1310 receives the request to formally execute thecomponent, the OCR component 1310 sends a format conversion request tothe format conversion managing unit 304 (step S1501). Note that theformat conversion request includes data and a specification of“LocalFilePath” indicating the data format that can be handled by theOCR component 1310.

When the format conversion managing unit 304 receives the formatconversion request, the format conversion managing unit 304 checkswhether the data format of the data included in the format conversionrequest and the specified data format match each other (step S1502).

Here, the data format of the data included in the format conversionrequest is “LocalFilePath”, and the specified data format is also“LocalFilePath”. Therefore, the format conversion managing unit 304determines that the data format of the data included in the formatconversion request and the specified data format match each other.

Then, the format conversion managing unit 304 sends the data included inthe format conversion request, to the OCR component 1310 (step S1503).As described above, when the OCR component 1310 determines, in theprocess of checking the data format (the process of step S1502), thatthe data format of the data and the specified data format match eachother, the format conversion managing unit 304 does not generate formatconversion.

When the OCR component 1310 receives data from the format conversionmanaging unit 304, the OCR component 1310 uses the parameter informationto perform a process of formally executing an OCR process (step S1504).

That is, the OCR component 1310 performs an OCR process on theelectronic file indicated by the data (the data format “LocalFilePath”),by the OCR processing unit 131 of the document service unit 130. At thistime, the OCR component 1310 sets the OCR language as “English” andperforms an OCR process on the electronic file, and then sets the dataformat of the electronic file that has undergone the OCR process as“PDF”.

Then, the OCR component 1310 returns data indicating the processingresult to the flow executing unit 301. Note that the data returned hereis data (data format “LocalFilePath”) indicating the electronic filethat has undergone the OCR process by the OCR component 1310.

Referring back to FIG. 12, the flow executing unit 301 sends a requestto formally execute the component, to the delivery A component 1320(step S1213). Note that the request to formally execute the componentincludes data and parameter information.

Here, in step S1213 described above, the data is the data returned fromthe OCR component 1310 (that is, data indicating the electronic filethat has undergone the OCR process (data format “LocalFilePath”).

Furthermore, in step S1213 described above, the parameter information iseach of the parameter information items defined at “parameters” in theprocess definition 1105 in the process flow information 1100 of FIG. 8.

That is, the request to formally execute the component in step S1213described above includes parameter information “filename”:null andparameter information “folder”:null. Furthermore, the request toformally execute the component in step S1213 described above includesuser specified information “filename”:“sample.pdf” and user specifiedinformation “folder”:“folder1” received from the web service processingunit 120.

When the delivery A component 1320 receives the request to formallyexecute the component, the delivery A component 1320 uses the data, theparameter information, and the user specified information included inthe formal execution request, to perform the formal execution (stepS1214).

Here, a description is given of the process of formally executing thedelivery A component 1320, by referring to FIG. 16. FIG. 16 is asequence diagram of an example of a process of formally executing thedelivery A component 1320 according to the present embodiment.

When the delivery A component 1320 receives the request to formallyexecute the component, the delivery A component 1320 sends a formatconversion request to the format conversion managing unit 304 (stepS1601). Note that the format conversion request includes data and aspecification of “LocalFilePath” indicating the data format that can behandled by the delivery A component 1320.

When the format conversion managing unit 304 receives the formatconversion request, the format conversion managing unit 304 checkswhether the data format of the data included in the format conversionrequest and the specified data format match each other (step S1602).

Here, the data format of the data included in the format conversionrequest is “LocalFilePath”, and the specified data format is also“LocalFilePath”. Therefore, the format conversion managing unit 304determines that the data format of the data included in the formatconversion request and the specified data format match each other.

Then, the format conversion managing unit 304 sends the data included inthe format conversion request, to the delivery A component 1320 (stepS1603). As described above, when the format conversion managing unit 304determines, in the process of checking the data format (the process ofstep S1602), that the data format of the data and the specified dataformat match each other, the format conversion managing unit 304 doesnot generate format conversion.

When the delivery A component 1320 receives data from the formatconversion managing unit 304, the delivery A component 1320 uses thedata, the parameter information, and the user specified information toperform a process of formally executing an uploading process to thestorage A (step S1604).

That is, first, the delivery A component 1320 defines user specifiedinformation in the parameter information as “filename”:“sample.pdf” and“folder”:“folder1”. Next, the delivery A component 1320 uses theparameter information “filename”:“sample.pdf” and “folder”:“folder1” toset the file name of the electronic file indicated by the data as“sample.pdf”. Then, the delivery A component 1320 uploads (stores) theelectronic file in the folder having the folder ID “folder1” in thestorage A.

Note that the delivery A component 1320 sends a request to upload theelectronic file to the file processing unit 141 of the external servicecooperating unit 140 ₁ corresponding to the storage A (external storagesystem 30 ₁). That is, for example, the delivery A component 1320 usesan API defined in the common I/F 1411 as “storageA/process/folders”, toupload the electronic file.

Then, the delivery A component 1320 returns data indicating theprocessing result to the flow executing unit 301. Note that the datareturned here is data indicating the processing result of the delivery Acomponent 1320 (for example, data indicating that the uploading of theelectronic file has successfully ended).

As described above, the service providing system 10 according to thepresent embodiment can provide the “OCR delivery A” service to a user ofthe device 20. At this time, the service providing system 10 accordingto the present embodiment provisionally executes the sequence ofprocesses for implementing the service, and when an error, etc., doesnot occur in the provisional execution, the service providing system 10formally executes the sequence of processes.

Accordingly, for example, the service providing system 10 according tothe present embodiment can check whether there is an error in theparameter information used for executing the sequence of processes,whether the communication with an external service is disabled, andwhether there is an error in the format of the electronic file, etc.,before formally executing the sequence of processes.

Note that the service providing system 10 according to the presentembodiment performs the provisional execution of the sequence ofprocesses for implementing the service to be provided to the user of thedevice 20, and subsequently performs the formal execution of thesequence of processes; however, the present embodiment is not limited assuch, and the provisional execution may not be performed.

For example, the user of the device 20 may be able to select whether toperform the provisional execution in the application screen, etc. Inthis case, in step S911 described above, the device 20 is to send therequest to execute the process flow including information indicatingwhether to perform the provisional execution, to the web serviceprocessing unit 120.

Furthermore, for example, information indicating whether to perform theprovisional execution (a flag, etc.) may be defined in the process flowinformation 1100. In this case, the flow executing unit 301 is todetermine whether to perform the provisional execution, based on a flag,etc., defined in the process flow information 1100 acquired from theapplication managing unit 111.

Next, a description is given of a case where an error, etc., occurs inthe provisional execution phase in the process of executing the processflow for implementing the “OCR delivery A” service, by referring to FIG.17. FIG. 17 is a sequence diagram of another example of the process ofexecuting the process flow according to the present embodiment. Notethat the processes of steps S1701 through S1703 of FIG. 17 are the sameas the processes of steps S1201 through S1203 of FIG. 12, and thereforedescriptions of these steps are omitted.

After step S1703, when the OCR component 1310 receives a request toprovisionally execute the component, the OCR component 1310 uses thedata and the parameter information included in the provisional executionrequest to perform a provisional execution process (step S1704).

Here, in the following description, it is assumed that an error, etc.,has occurred in the provisional execution process of the OCR component1310 in step S1704 described above. In this case, the OCR component 1310returns data indicating that an error etc., has occurred, to the flowexecuting unit 301.

When the flow executing unit 301 receives the data from the OCRcomponent 1310, the flow executing unit 301 determines whether tocontinue the process of executing the process flow (step S1705). Thatis, the flow executing unit 301 determines whether the data returnedfrom the OCR component 1310 indicates that an error, etc., has occurred.

Here, in step S1704 described above, the data returned from the OCRcomponent 1310 indicates that an error, etc., has occurred. In thiscase, the flow executing unit 301 reports to the device 20 that anerror, etc., has occurred via the web service processing unit 120 (stepS1706), and the process ends.

Overview

As described above, the service providing system 10 according to thepresent embodiment performs the provisional execution of the sequence ofprocesses for implementing the service to be provided to the user of thedevice 20, and subsequently performs the formal execution of thesequence of processes, when an error, etc., does not occur in theprovisional execution.

Furthermore, when an error, etc., occurs in the provisional executionphase, the service providing system 10 according to the presentembodiment reports than an error, etc., has occurred to the device 20,and does not perform the formal execution phase. That is, the serviceproviding system 10 according to the present embodiment checks whetheran error, etc., occurs in the sequence of processes in the provisionalexecution phase, and when an error, etc., occurs, the service providingsystem 10 does not perform the formal execution phase and reports thatan error, etc., has occurred to the user of the device 20.

Accordingly, the service providing system 10 according to the presentembodiment can check whether there is an error in the parameterinformation used for executing the sequence of processes, whether thecommunication with an external service is disabled, and whether there isan error in the format of the electronic file, etc., before formallyexecuting the sequence of processes.

Furthermore, the service providing system 10 according to the presentembodiment can report, at an early stage, that an error, etc., hasoccurred to the user of the device 20, when an error, etc., occurs inthe sequence of processes for implementing a service. Therefore, when anerror, etc., occurs in the sequence of processes, the service providingsystem 10 according to the present embodiment can reduce the waitingtime of the user, and can also reduce the unnecessary consumption ofsystem resources (for example, the CPU 16, etc.). Particularly, when anerror, etc., occurs in a process executed at a latter stage among theprocesses included in the sequence of processes, the service providingsystem 10 according to the present embodiment can further reduce thewaiting time of the user and unnecessary consumption of systemresources.

According to one embodiment of the present invention, the waiting timein a case where an error occurs in a sequence of processes, can bereduced.

The information processing system, the information processing apparatus,and the information processing method are not limited to the specificembodiments described in the detailed description, and variations andmodifications may be made without departing from the spirit and scope ofthe present invention.

What is claimed is:
 1. An information processing system including one ormore information processing apparatuses configured to implement variousfunctions of the information processing system, the informationprocessing system comprising: a memory to store flow information andflow identification information identifying the flow information, inassociation with each other, for each sequence of processes performed byusing electronic data, the flow information defining programidentification information identifying one or more programs forrespectively executing the processes included in the sequence ofprocesses, the flow information also defining an execution order ofexecuting the one or more programs, and computer-executableinstructions; and one or more processors configured to execute thecomputer-executable instructions such that the one or more processorsexecute a process including: receiving, over a communication network,information relating to the electronic data and flow identificationinformation, from one of one or more devices coupled to the informationprocessing system, according to an operation input via a user interfaceof the one of one or more devices; acquiring the flow information storedin association with the received flow identification information, amongthe flow information stored in the memory; provisionally executing thesequence of processes using the electronic data based on the receivedinformation relating to the electronic data, by respectivelyprovisionally executing the one or more programs identified by theprogram identification information defined in the acquired flowinformation, in the execution order defined in the acquired flowinformation; and executing the sequence of processes using theelectronic data based on the received information relating to theelectronic data, by respectively executing the one or more programsidentified by the program identification information defined in theacquired flow information, in the execution order defined in theacquired flow information, upon determining that an error has notoccurred in the provisional execution of the sequence of processes. 2.The information processing system according to claim 1, wherein the oneor more processors execute the process further including: reporting thatan error has occurred, to the one of one or more devices withoutexecuting the sequence of processes, upon determining that the error hasoccurred in the provisional execution of the sequence of processes. 3.The information processing system according to claim 1, wherein the flowinformation further defines parameter information used for respectivelyexecuting the one or more programs, and the provisional executing of thesequence of processes includes confirming whether the parameterinformation, which is used for respectively executing the one or moreprograms, is supported by the one or more programs.
 4. The informationprocessing system according to claim 1, wherein the provisionalexecuting of the sequence of processes includes confirming whether atleast one of a quantity of the electronic data used for executing theone or more programs, a number of pages included in the electronic data,and a size of the electronic data, exceed a predetermined upper limitthat is set in advance.
 5. The information processing system accordingto claim 1, wherein the one or more programs include an external serviceprogram for executing a process relating to an external service, and theexternal service program includes at least a program for executing aprocess of uploading the electronic data to the external service.
 6. Theinformation processing system according to claim 1, wherein theexecution order is an order in which the program identificationinformation is defined in the flow information.
 7. An informationprocessing apparatus comprising: a memory to store flow information andflow identification information identifying the flow information, inassociation with each other, for each sequence of processes performed byusing electronic data, the flow information defining programidentification information identifying one or more programs forrespectively executing the processes included in the sequence ofprocesses, the flow information also defining an execution order ofexecuting the one or more programs, and computer-executableinstructions; and one or more processors configured to execute thecomputer-executable instructions such that the one or more processorsexecute a process including: receiving, over a communication network,information relating to the electronic data and flow identificationinformation, from one of one or more devices coupled to the informationprocessing apparatus, according to an operation input via a userinterface of the one of one or more devices; acquiring the flowinformation stored in association with the received flow identificationinformation, among the flow information stored in the memory;provisionally executing the sequence of processes using the electronicdata based on the received information relating to the electronic data,by respectively provisionally executing the one or more programsidentified by the program identification information defined in theacquired flow information, in the execution order defined in theacquired flow information; and executing the sequence of processes usingthe electronic data based on the received information relating to theelectronic data, by respectively executing the one or more programsidentified by the program identification information defined in theacquired flow information, in the execution order defined in theacquired flow information, upon determining that an error has notoccurred in the provisional execution of the sequence of processes. 8.An information processing method executed by a computer, the informationprocessing method being implemented in an information processing systemincluding one or more information processing apparatuses configured toimplement various functions of the information processing system, and amemory to store flow information and flow identification informationidentifying the flow information, in association with each other, foreach sequence of processes performed by using electronic data, the flowinformation defining program identification information identifying oneor more programs for respectively executing the processes included inthe sequence of processes, the flow information also defining anexecution order of executing the one or more programs, the informationprocessing method comprising: receiving, over a communication network,information relating to the electronic data and flow identificationinformation, from one of one or more devices coupled to the informationprocessing system, according to an operation input via a user interfaceof the one of one or more devices; acquiring the flow information storedin association with the received flow identification information, amongthe flow information stored in the memory; provisionally executing thesequence of processes using the electronic data based on the receivedinformation relating to the electronic data, by respectivelyprovisionally executing the one or more programs identified by theprogram identification information defined in the acquired flowinformation, in the execution order defined in the acquired flowinformation; and executing the sequence of processes using theelectronic data based on the received information relating to theelectronic data, by respectively executing the one or more programsidentified by the program identification information defined in theacquired flow information, in the execution order defined in theacquired flow information, upon determining that an error has notoccurred in the provisional execution of the sequence of processes.